發布日期:2024 年 11 月 13 日,上次更新日期:2025 年 5 月 20 日
說明 | 網頁 | 額外資訊 | Chrome 狀態 | Intent |
---|---|---|---|---|
MDN | 查看 | 意圖進行實驗 |
在 Chrome 中使用 Translator API,透過瀏覽器提供的 AI 模型翻譯文字。
你的網站可能已經提供多種語言的網站內容,讓全球觀眾都能存取。使用者可透過 Translator API 以母語進行貢獻。舉例來說,使用者可以使用第一語言參與支援聊天,而您的網站會將訊息翻譯成支援專員使用的語言,然後傳送給使用者。這麼做可為所有使用者提供流暢、快速且無障礙的體驗。
過去,要翻譯網站上的內容,通常必須使用雲端服務。首先,來源內容會上傳至伺服器,然後執行翻譯至目標語言的作業,接著下載結果文字並傳回給使用者。在用戶端上執行翻譯作業,可節省伺服器行程所需的時間,以及代管翻譯服務的費用。
開始使用
Translator API 可在 Chrome 138 穩定版中使用。首先,請執行功能偵測,確認瀏覽器是否支援 Translator API。
if ('Translator' in self) {
// The Translator API is supported.
}
雖然您一律都知道翻譯的目標語言,但不一定會知道原文語言。在這種情況下,您可以使用 Language Detector API。
查看硬體需求
Language Detector API 和 Translator API 僅適用於 Chrome 桌面版。
在 Chrome 中,Prompt API、Summarizer API、Writer API 和 Rewriter API 會在下列條件下運作:
- 作業系統:Windows 10 或 11;macOS 13 以上版本 (Ventura 以上版本);或 Linux。由 Gemini Nano 支援的 API 尚未支援 Android、iOS 和 ChromeOS 版 Chrome。
- 儲存空間:含有 Chrome 設定檔的磁碟區至少有 22 GB。
- GPU:VRAM 必須大於 4 GB。
- 網路:無限上網流量或無限上網連線。
這些規定適用於您在開發過程中,以及使用您建構的功能的使用者。
確認支援的語言組合
翻譯功能會透過語言套件進行管理,並視需要下載。語言包就像特定語言的字典。
sourceLanguage
:文字目前的語言。targetLanguage
:文字應翻譯成最終語言。
使用 BCP 47 語言代碼做為字串。例如 'es'
(西班牙文) 或 'fr'
(法文)。
const translatorCapabilities = await Translator.availability({
sourceLanguage: 'es',
targetLanguage: 'fr',
});
// 'available'
availability()
函式會傳回含有下列值的承諾:
"unavailable"
:實作方式不支援指定語言的翻譯或語言偵測。"downloadable"
:實作項目支援指定語言的翻譯或語言偵測,但必須先下載才能繼續。下載項目可能是瀏覽器模型。"downloading"
:實作項目支援指定語言的翻譯或語言偵測。瀏覽器正在完成進行中的下載作業,這是建立相關聯物件的一部分。"available"
:實作內容支援指定語言的翻譯或語言偵測,且所有必要的下載作業都已完成。
使用 downloadprogress
事件監聽模型下載進度:
const translator = await Translator.create({
sourceLanguage: 'es',
targetLanguage: 'fr',
monitor(m) {
m.addEventListener('downloadprogress', (e) => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
},
});
如果下載失敗,downloadprogress
事件就會停止,且 ready
應許會遭到拒絕。
建立及執行翻譯器
如要建立翻譯器,請呼叫非同步 create()
函式。這個函式需要一個含有兩個欄位的選項參數,一個用於 sourceLanguage
,另一個用於 targetLanguage
。
// Create a translator that translates from English to French.
const translator = await Translator.create({
sourceLanguage: 'en',
targetLanguage: 'fr',
});
取得翻譯器後,請呼叫非同步 translate()
。
await translator.translate('Where is the next bus stop, please?');
// "Où est le prochain arrêt de bus, s'il vous plaît ?"
依序翻譯
系統會依序處理翻譯作業。如果您傳送大量文字進行翻譯,系統會先完成先前的翻譯作業,再處理後續的翻譯作業。
為了盡可能妥善回應要求,請將要求分成多個區塊,並新增載入介面 (例如旋轉圖示),以便傳達翻譯作業正在進行中。
示範
您可以在 Translator 和 Language Detector API 遊樂場中,查看與 Language Detector API 搭配使用的 Translator API。
標準化作業
我們正在努力將 Translator API 標準化,以確保跨瀏覽器的相容性。
我們的 API 提案獲得社群支持,並已移至 W3C Web Incubator Community Group 進一步討論。Chrome 團隊向 W3C 技術架構小組索取意見回饋,並向 Mozilla 和 WebKit 詢問他們的標準立場。
您可以加入Web Incubator 社群群組,參與標準制定工作。
提供意見
我們想瞭解您使用 Language Detector API 建構的內容。在 X、YouTube 和 LinkedIn 上與我們分享網站和網路應用程式。